#ifndef _can_api_H_
#define _can_api_H_

#define FAULT_HOLD_TIME  5  // 错误保留时间，当有错误时将此数赋给错误标志
#define FAULT_PAGE_TIME  60  //当有错误时，报警页显示时间间隔
#define FAULT_REPLY_TIME 11 // 有报警后回传时间间隔，300毫秒为一单位

extern CAN_T *tCAN;
extern uint8_t DPF_TISHI;
extern uint8_t DPF_STATE;
extern uint8_t DPF_JSY;

extern uint8_t DPF_JINZHI;
extern uint8_t DPF_HIGH;
extern uint8_t DPF_STOP;
extern uint8_t DPF_DIS[6];
extern uint8_t ReverFlagFast;

extern uint8_t EngineType; // 0 五十铃  1 洋马  2 潍柴  3 康明斯
extern uint16_t FaultCode;         // 故障代码
extern uint16_t FaultSPN;          // 可疑参数编号
extern uint32_t FaultSPN_L;        // 可疑参数编号
extern uint16_t FaultFMI_L;        // 故障模式标志
extern uint16_t FaultFMI;          // 故障模式标志
extern unsigned int FaultLed ;          // 故障灯
extern unsigned char FaultOC;          // 故障发生次数
extern unsigned char FaultData[256]; //  用来存放故障代码， 每4个单元为一故障
extern unsigned int FaultPageCnt;      // 有故障后报警计数，当此值为0并且有故障时跳到故障显示页
extern unsigned int FaultFlag;         //  0 : 没有发动机故障，>=1: 有发动机故障 ，此值每秒减1，
extern unsigned char FaultWrPtr;       //  接收到的错误报文指针
extern unsigned char FaultWrPtrTemp;   //  临时接收指针
extern unsigned char FaultRdPtr;       //  处理的错误报文指针
extern unsigned char FaultPageUpOrDn;  // 故障上下翻页，0不动，1上翻，2下翻
extern unsigned char FaultRcving;      // 0  没有报文，1 有报文需要接收
extern unsigned char FaultPackageNum;  // 总包数
extern unsigned char FaultDataNum;     // 故障多包数据的数据量
extern unsigned char FaultPackageWr;   // 已签收包数
extern unsigned int FaultReplyCnt;     // 故障回传计时
extern unsigned char FaultReplyPtr;    // 故障回传指针
extern unsigned char FaultReplyFlag;   //  故障恢复标志，当已全部回复完后置1

char CANSendMsg (unsigned long id, unsigned char* data, unsigned char datalen);
void CAN_Init(CAN_T *tCAN_tm);
void Test_NormalMode_Tx(CAN_T *tCAN);
void CanSendWork(void);
void FaultDataPro_L(void);
void DPF_CHECK(void);
#endif


